package com.aos.dto.parameters;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @ClassName UserParameter
 * @Description:用户参数类
 * @Author wumingwang
 * @Date 2018/9/9 11:47
 * @Version 1.0
 */
@Data
public class UserParameter implements Serializable {
    private static final long serialVersionUID = 3140596320398075650L;
    /**主键、自增*/
    @ApiModelProperty(hidden = true)
    private Long id;

    /**账号父ID*/
    private Long parentId;

    /**登陆账号|用户名*/
    @NotNull(message="账号不能为空")
    @Size(min=1,max=50,message="账号长度必须在1~50位")
    private String username;

    /**登陆密码或者密码标识(比如密码md5)*/
    private String password;

    /**用户名字*/
    @NotNull(message="用户名称不能为空")
    @Size(min=1,max=20,message="用户名称长度必须在1~50位")
    private String name;

    /**用户电子邮箱*/
    @Size(max=50,message="邮箱不能超过50位")
    @Pattern(regexp = "^$|^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$",message="邮箱不合法")
    private String email;

    /**手机号*/
    @Size(max=20,message="手机号码不能超过20位")
    private String mobile;

    /**性别【男:1;女:2;未知:3】*/
    @Pattern(regexp = "^$|^\\d{1}$",message="性别只能是1位数字")
    private String sex;

    /**应用code*/
    @NotNull(message="应用code不能为空")
    @Size(min=1,message="应用code不能为空")
    private String appCode;

    /**用户所在组织(公司、驾校、班级等)信息*/
    private String group;

    /**备注*/
    private String comment;

    /**用户状态【1:可用 默认；2不可用】;可用用户返回权限，不可用用户不返回权限*/
    @NotNull(message="用户状态不能为空")
    @Pattern(regexp = "^\\d{1}$",message="用户状态只能是1位数字")
    private String state;

    @ApiModelProperty(hidden = true)
    private List<Map<Long,Long[]>> roles;
}
